const express = require("express");
const path = require("path");

const formidable = require("express-formidable");
const { log } = require("console");

const app = express();

// 静态资源服务
app.use(express.static(path.join(__dirname,"public")));


app.use((req,res,next) =>{
    // access进入，control控制，allow允许
    res.header("Access-Control-Allow-Origin","http://127.0.0.1:5500");//origin允许的源，*所有的源
    res.header("Access-Control-Allow-Headers","Content-Type,X-Requested-With");//允许的请求头部
    res.header("Access-Control-Allow-Methods","GET,POST");//允许的请求方式
    next();

})



// post表单解析
app.use(express.urlencoded({extended:false}));  //只能解析这种类型ontent-type : application/x-www-form-urlencoded


// 以json方式发送的请求的解析
app.use(express.json());


// 设置路由
const router = express.Router();


// 案例1的路由
router.get("/get",(req,res) =>{
    res.json({status:"ok"});
})


// 案例2的路由
router.get("/jsonp",(req,res) =>{
    // console.log("222222")
    // res.send('fn("hello world")');
    // res.send('var fn = function(data){console.log(data)};fn("hello world")')
    // res.send("console.log('123')")
    // res.send("<h1>12345678910</h1>");//这个访问只能输入地址进行访问
    console.log(req.query);

    console.log("前面的req.query",req.query);
    const {callback} = req.query;
    console.log("后面的req.query",req.query);
    res.send(`${callback}("hello world")`);
})


// 必须要求请求查询的参数中有callback这一项
// 案例3的路由
// express直接提供了一种jsonp的响应方式
router.get("/jsonp2",(req,res) =>{
    res.jsonp({msg:"ok"});//这个就相当于jsonp帮我们把案例一中的const {callback} = req.query;
    // 和res.send(`${callback}("hello world")`);res.jsonp({msg:"ok"});帮写好了

})

router.get("/one",(req,res) =>{
    setTimeout(() =>{
        res.jsonp("返回给按钮1的响应");
    },2000)
})

router.get("/two",(req,res) =>{
    res.jsonp("返回给按钮2的响应");
})



// 07 代理服务器体会
router.get("/proxy",(req,res) =>{
    console.log(req.query);
    res.json(req.query);
})



app.use("/",router);

app.listen(3002,() =>{
    console.log("listen 3002");
})






